package com.crm.system.service.contactManager;

import com.crm.common.model.DhPageInfo;
import com.crm.model.entity.contactManager.Contact;
import com.crm.model.entity.contactManager.ContactDetail;
import com.crm.model.entity.contactManager.ContactInformation;
import com.crm.model.entity.contactManager.ContactTag;
import com.crm.model.entity.opportunityManager.Opportunity;
import com.crm.model.qo.contactManager.ContactQO;
import com.crm.model.vo.contactManager.ContactVO;
import com.crm.model.vo.customerManager.CustomerContactVO;

import java.util.Date;
import java.util.List;

/**
 * 联系人管理信息
 */
public interface ContactDetailService {

    /**
     * 根据联系人id,客户id,联系人姓名,企业性质查询同一联系人下的联系方式
     * @param pageIndex 页码
     * @param pageSize 分页大小
     * @param sortName 查询条件
     * @param sortOrder 排序列名字
     * @param customerContactVO 排序规则(asc/desc)
     * @return
     */
    DhPageInfo<ContactDetail> contactDetailList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder, CustomerContactVO customerContactVO);

    /**
     * 联系人-新增联系方式,节日节点
     * @param contactDetail  联系人实体类
     * @return
     */
    Boolean addContactDetail(ContactDetail contactDetail);

    /**
     * 联系人-联系人详情-联系方式重复
     * @param contactId 联系人id
     * @param contactDetailValue 联系方式
     * @return
     */
    ContactDetail getContactDetailIdAndContactDetailValue(String contactId, String contactDetailValue);

    /**
     * 联系人-修改联系方式,节日节点
     * @param contactDetail 联系详情实体
     * @return
     */
    Boolean updateContactDetail(ContactDetail contactDetail);

    /**
     * 联系人-联系人详情-联系方式,节日节点修改回显
     * @param contactDetailId 联系方式id,节日节点id
     * @return
     */
    ContactDetail getContactDetailId(String contactDetailId);

    /**
     * 联系人-删除联系方式,节日节点 逻辑删除
     * @param contactDetailId 联系方式id,节日节点id
     * @return
     */
    Boolean deleteContactDetail(String contactDetailId);

    /**
     * 新增联系人标签库
     * @return
     */
    String addContactTag(String tag);

    /**
     * 查询联系人标签
     * @return
     */
    List<ContactTag> contactTagList();

    /**
     * 删除联系人标签库
     * @param tagId 联系人标签id
     * @return
     */
    Boolean deleteContactTag(String tagId);
}
